El modelo relacional

Estructura de las BD relacionales

Una base de datos relacional es un conjunto de tablas, cada una de ellas con un nombre único en la BD.

Cada tabla es un conjunto de entidades compuestas por:

Otros conceptos que nos permiten definir características de nuestros datos son:

Ejemplo:

 

Ejemplo_DBR

 

Si denominamos D1, D2 y D3 a cada uno de esos dominios, la tabla cuenta será un subconjunto del producto cartesiano D1D2D3.

Puesto que la definición matemática de relación es exactamente esa, denominaremos relaciones a las tablas y tuplas a las filas.

En resumen, la estructura básica de las tablas está determinada por un conjunto de atributos, donde sus dominios determinan los valores que podrían tomar estos atributos.

Cada tupla o fila de una tabla representa un caso particular de la misma relación, por lo tanto, la tabla puede considerarse un conjunto de estas tuplas o filas. De esta forma, cada tupla sólo puede estar una vez en la tabla.

 

Esquema de la base de datos

Ejemplo:

Esquema_cuenta = (numero_cuenta, nombre_sucursal, saldo)

 

Definición de claves

Es necesario poder distinguir cada una de las tuplas dentro de una relación, pues dos tuplas no pueden tener exactamente los mismos valores en todos sus atributos.

Para asegurar que cada tupla está sólo una vez en la relación ha de definirse una clave, que serán los atributos que hacen falta para identificar cada tupla de forma única.

A estos atributos se les llama claves.

En nuestro ejemplo las claves seria:

En cambio nombre_sucursal o importe, nunca pueden ser claves de forma independiente, pues puede haber valores con el mismo valor.

 

Tipos de claves

Diagrama_relacional

 

Lenguaje de consultas

Los lenguajes de consultas permiten a los usuarios solicitar información de la BD.

Tipos:

 

Operaciones fundamentales en el álgebra relacional

Selección

Esta operación selecciona tuplas que satisfacen un predicado (condiciones):

Informalmente sería como seleccionar las filas de la tabla según el cumplimiento de unas condiciones.

 

Operacion_seleccion

 

Ejemplo:

Tenemos la siguiente tabla:

numero_cuenta
nombre_sucursal
saldo
C-102
Centro
4000
C-055
Navacerrada
7000
C-010
Galapagar
5000
C-203
Becerril
2000
C-100
Morazarzal
1999
C-398
Collado Mediano
4558

 

  1. Si queremos consultar los Datos de las cuentas cuya sucursal sea Navacerrada, debemos introducir la siguiente operación:

    σnombre_sucursal = "Navacerrada"(Cuenta)

    Nos devolverá:

    numero_cuenta
    nombre_sucursal
    saldo
    C-055
    Navacerrada
    7000

     

  2. Si queremos consultar los Datos de las cuentas cuyo saldo sea menor o igual a 2000, debemos introducir la siguiente operación:

    σsaldo ≤ 2000(Cuenta)

    Nos devolverá:

    numero_cuenta
    nombre_sucursal
    saldo
    C-203
    Becerril
    2000
    C-100
    Morazarzal
    1999

 

Proyección

Operación unaria que devuelve un conjunto de atributos de una relación.

Una vez tomados los atributos elimina las filas duplicadas.

Para denotar esta operación se usa la letra griega pi (π).

Informalmente sería como seleccionar las columnas de la tabla en función de los nombres de los atributos.

 

Operacion_proyeccion

 

Ejemplo:

  1. Si queremos consultar Números de cuenta y Nombres de sucursal de la relación Cuentas, debemos introducir la siguiente operación:

    πnumero_cuenta,nombre_sucursal(Cuentas)

    Nos devolverá:

    numero_cuenta
    nombre_sucursal
    C-102
    Centro
    C-055
    Navacerrada
    C-010
    Galapagar
    C-203
    Becerril
    C-100
    Morazarzal
    C-398
    Collado Mediano

     

Composición de operaciones

Las operaciones del álgebra relacional devuelven una relación, entonces, el argumento de una operación puede ser otra operación (que devuelve una relación).

 

Ejemplo:

  1. Si queremos consultar los Números de cuenta cuyo nombre de sucursal sea Navacerrada de la relación Cuentas, debemos introducir la siguiente operación:

    πnumero_cuenta nombre_sucursal = "Navacerrada"(Cuentas))

    Nos devolverá:

    numero_cuenta
    C-055

     

Unión

Al igual que las operaciones sobre conjuntos que haríamos en matemáticas, la operación unión combina las tuplas de las relaciones implicadas.

Para poder realizar una operación de unión se requiere:

Devuelve todas las tuplas de las dos relaciones, eliminando duplicados.

Para denotar esta operación se usa el operador .

Informalmente es como la unión de conjuntos, en este caso de tuplas.

 

Operacion_union

 

Ejemplo:

Tenemos las siguientes tablas:

Tabla Cuenta
nombre_cliente
numero_cuenta
Belén
C-102
Jose
C-055
Ana
C-010
Mario
C-203
Alberto
C-100
Antonio
C-398

 

Tabla Prestamo
nombre_cliente
numero_prestamo
Pedro
P-16
Juan
P-11
María
P-23
Jose
P-15
Ana
P-93
Sara
P-17

 

  1. Si queremos consultar el Nombre de los clientes que tienen un préstamo o una cuenta, debemos introducir la siguiente operación:

    πnombre_cliente(Prestamo) ∪ πnombre_cliente(Cuenta)

    Nos devolverá:

    nombre_cliente
    Pedro
    Belén
    Juan
    María
    Jose
    Mario
    Ana
    Alberto
    Sara
    Antonio

     

Diferencia

La operación diferencia devuelve las tuplas que están en la primera relación, pero no están en la segunda.

Para denotar esta operación se usa el operador ().

Informalmente es como la diferencia de conjuntos.

 

Operacion_diferencia

 

Ejemplo:

  1. Si queremos consultar los Clientes que tienen cuenta pero no un préstamo, debemos introducir la siguiente operación:

    πnombre_cliente(Cuenta) - πnombre_cliente(Prestamo)

    Nos devolverá:

    nombre_cliente
    Belén
    Mario
    Alberto
    Antonio

     

Producto cartesiano

El producto cartesiano combina la información de dos relaciones cualesquiera:

Informalmente es como el producto cartesiano en teoría de conjuntos.

 

Operacion_producto_cartesiano

 

Ejemplo:

  1. Si queremos hacer el producto cartesiano de la relación Cuenta y Préstamo, debemos introducir la siguiente operación:

    Cuenta x Prestamo

    Nos devolverá:

    nombre_cliente
    numero_cuenta
    nombre_cliente
    numero_prestamo
    Belén
    C-102
    Pedro
    P-16
    Belén
    C-102
    Juan
    P-11
    Belén
    C-102
    María
    P-23
    Belén
    C-102
    Jose
    P-15
    Belén
    C-102
    Ana
    P-93
    Belén
    C-102
    Sara
    P-17
    ...

 

Intersección

La operación intersección devuelve las tuplas que están en las dos relaciones.

Para denotar esta operación se usa el operador .

Informalmente es como la intersección de conjuntos.

 

Operacion_ interseccion

 

Ejemplo:

  1. Si queremos consultar los clientes con préstamo y cuenta, debemos introducir la siguiente operación:

    πnombre_cliente(Prestamo) ∩ πnombre_cliente(Cuenta)

    Nos devolverá:

    nombre_cliente
    Jose
    Ana

 

Reunión natural

La operación de reunión natural permite simplificar la operación de producto cartesiano que requiere operación de selección, combinando una selección y un producto cartesiano por medio del operador .

Considera las tuplas que tienen el mismo valor en atributos del mismo nombre.

Informalmente es la recuperación de información dispersa por atributos comunes.

 

Operacion_reunion_natural

 

Ejemplo:

  1. Si queremos consultar los Nombres de clientes que tienen un préstamo y una cuenta, debemos introducir la siguiente operación:

    πnombre_cliente(prestamo ⨝ cuenta)

    Nos devolverá:

    nombre_cliente
    Jose
    Ana

 

Algebra relacional extendida

Proyección de agrupaciones

Agregación

Las funciones de agregación toman un conjunto de valores y devuelven un resultado único. Tenemos diferentes funciones de agregación que podemos utilizar en el álgebra relacional extendida:

Se denota con ( γ ) y se debe renombrar para que nos permita ejecutarla.

 

Ejemplo:

Tenemos la siguiente tabla:

numero_cuenta
nombre_sucursal
saldo
C-102
Centro
4000
C-055
Navacerrada
7000
C-010
Galapagar
5000
C-203
Becerril
2000
C-100
Morazarzal
1999
C-398
Collado Mediano
4558

 

 

  1. Si queremos consultar la suma de saldo de las cuentas, debemos introducir la siguiente operación:

    γ sum(saldo)(Cuentas) → total

    Nos devolverá:

    total
    24557

     

by Jose Manuel Pinillos